import java.io.File;
import java.io.IOException;
import java.util.Arrays;

public class IODemo {
    public static void main(String[] args) {
        System.out.println(File.separator);
        System.out.println(File.separatorChar);
    }

    public static void main6(String[] args) {
        File file = new File("D:/Test_IO/test.txt"); // 要求 D:/Test_IO/test.txt 得存在，可以是普通文件，可以是目录
        File dest = new File("D:/Test_IO/hello.jpg"); // 要求 D:/Test_IO/hello.jpg 不存在

        System.out.println(file.exists()); // true
        System.out.println(dest.exists()); // false

        System.out.println(file.renameTo(dest));// 进行文件改名, 成功返回 true

        System.out.println(file.exists()); // false
        System.out.println(dest.exists()); // true
    }
    public static void main5(String[] args) {
        File directory = new File("D:/Test_IO/Test");
        System.out.println("是否存在: " + directory.exists());
        System.out.println("是否是目录: " + directory.isDirectory());
        System.out.println("是否是普通文件: " + directory.isFile() + '\n');

        System.out.println("创建一级目录: " + directory.mkdirs() + '\n');

        System.out.println("是否存在: " + directory.exists());
        System.out.println("是否是目录: " + directory.isDirectory());
        System.out.println("是否是普通文件: " + directory.isFile() + '\n');
    }

    public static void main4(String[] args) {
        File directory = new File("D:/Test_IO/Test");
        System.out.println("是否存在: " + directory.exists());
        System.out.println("是否是目录: " + directory.isDirectory());
        System.out.println("是否是普通文件: " + directory.isFile() + '\n');

        System.out.println("创建一级目录: " + directory.mkdir() + '\n');

        System.out.println("是否存在: " + directory.exists());
        System.out.println("是否是目录: " + directory.isDirectory());
        System.out.println("是否是普通文件: " + directory.isFile() + '\n');
    }
    public static void main3(String[] args) throws IOException {
        File file = new File("D:/Test_IO/test.txt");

        System.out.println("是否存在: " + file.exists());
        System.out.println("是否是目录: " + file.isDirectory());
        System.out.println("是否是普通文件: " + file.isFile() + '\n');

        System.out.println("创建文件: " + file.createNewFile() + '\n');

        System.out.println("是否存在: " + file.exists());
        System.out.println("是否是目录: " + file.isDirectory());
        System.out.println("是否是普通文件: " + file.isFile() + '\n');

        System.out.println("删除文件: " + file.delete() + "\n");  // 根据 File 对象，删除该文件。成功删除后返回 true

        System.out.println("是否存在: " + file.exists());
        System.out.println("创建文件: " + file.createNewFile() + '\n');

        file.deleteOnExit();
        System.out.println("deleteOnExit()");

        System.out.println("是否存在: " + file.exists());
    }
    public static void main2(String[] args) throws IOException {
        // 使用相对路径
        File file1 = new File("../test.txt");
        System.out.println(file1.getParent()); // 返回 File 对象的父目录文件路径
        System.out.println(file1.getName()); // 返回 File 对象的文件名称
        System.out.println(file1.getPath()); // 返回 File 对象的文件路径, 就是构造时传入的参数
        System.out.println(file1.getAbsolutePath()); // 返回 File 对象的绝对路径
        System.out.println(file1.getCanonicalPath()); // 返回 File 对象的修饰过的绝对路径

        System.out.println();

        // 使用绝对路径
        File file2 = new File("D:/Test_IO/test.txt");
        System.out.println(file2.getParent());
        System.out.println(file2.getName());
        System.out.println(file2.getPath());
        System.out.println(file2.getAbsolutePath());
        System.out.println(file2.getCanonicalPath());
    }

    public static void main1(String[] args) throws IOException {

        // 根据路径创建一个File实例, 绝对路径或者相对路径都可以
        File file1 = new File("D:/Test_IO/test.txt");

        File directory = new File("D:/Test_IO");

        // 父目录 + 孩子文件路径, 父目录是一个 File 对象, 而且必须是目录
        File file2 = new File(directory, "test2.txt");

        // 父目录 + 孩子文件路径, 父目录用路径表示
        File file3 = new File("D:/Test_IO/Test", "../test3.txt");

        // exists  文件是否真实存在
        System.out.println(file1.exists());
        System.out.println(file2.exists());
        System.out.println(file3.exists());

        // 根据 File 对象, 创建一个空文件
        file1.createNewFile();
        file2.createNewFile();
        file3.createNewFile();

        System.out.println(file1.exists());
        System.out.println(file2.exists());
        System.out.println(file3.exists());
    }
}
